#pragma once

#include "vector-collector-adapter.h"
#include "list-collector-adapter.h"


template <typename Container>
struct CollectorForImpl
{

};

template <typename E>
struct CollectorForImpl<std::vector<E>>
{
    using Type = VectorCollectorAdapter<E>;
};

template <typename E>
struct CollectorForImpl<std::list<E>>
{
    using Type = ListCollectorAdapter<E>;
};

template <typename T>
using CollectorFor = typename CollectorForImpl<T>::Type;
